module hip.api.graphics.text;

enum HipTextAlign
{
    CENTER,
    TOP,
    LEFT,
    RIGHT,
    BOTTOM
}

void getPositionFromAlignment(
    int x, int y, int width, int height, HipTextAlign alignh, HipTextAlign alignv, 
    out int newX, out int newY, int boundsWidth, int boundsHeight
)
{
    newX = x;
    newY = y;
    with(HipTextAlign)
    {
        switch(alignh)
        {
            case CENTER:
                if(boundsWidth != -1)
                {
                    newX = (x + (boundsWidth)/2) - (width / 2);
                }
                else
                    newX-= width/2;
                break;
            case RIGHT:
                newX-= width;
                break;
            case LEFT:
            default:
                break;
        }
        switch(alignv)
        {
            case CENTER:
                if(boundsHeight != -1)
                    newY = newY + (boundsHeight/2) - height/4;
                else
                    newY-= height/4;
                break;
            case BOTTOM:
                newY-= height/2;
                break;
            case TOP:
            default:
                break;
        }
    }
}